﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="StereoscopicHelper.cs" company="ScRePt">
//   Copyright © ScRePt 2010 - 2012
// </copyright>
// <summary>
//   The tstf config.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace MP3D.Stereoscopic
{
    #region Using Directives

    using System;
    using System.Diagnostics.CodeAnalysis;
    using System.Runtime.InteropServices;

    #endregion

    /// <summary>
    /// The i renderer config.
    /// </summary>
    [Guid("759D16A9-9EBA-4397-B79D-5F1647DD6698")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", Justification = "Reviewed. Suppression is OK here.")]
    internal interface IRendererConfig
    {
        /// <summary>
        /// The set resolution.
        /// </summary>
        /// <param name="ix">
        /// The ix.
        /// </param>
        /// <param name="iy">
        /// The iy.
        /// </param>
        void SetResolution([In] int ix, [In] int iy);

        /// <summary>
        /// The get resolution.
        /// </summary>
        /// <param name="ix">
        /// The ix.
        /// </param>
        /// <param name="iy">
        /// The iy.
        /// </param>
        void GetResolution([Out] out int ix, [Out] out int iy);

        /// <summary>
        /// The set refresh rate.
        /// </summary>
        /// <param name="iRate">
        /// The i rate.
        /// </param>
        void SetRefreshRate([In] int iRate);

        /// <summary>
        /// The set color depth.
        /// </summary>
        /// <param name="iDepth">
        /// The i depth.
        /// </param>
        void SetColorDepth([In] int iDepth);

        /// <summary>
        /// The set monitor.
        /// </summary>
        /// <param name="hMonitor">
        /// The h monitor.
        /// </param>
        void SetMonitor([In] IntPtr hMonitor);

        /// <summary>
        /// The set show statistics.
        /// </summary>
        /// <param name="bShowStatistics">
        /// The b show statistics.
        /// </param>
        void SetShowStatistics([In] bool bShowStatistics);

        /// <summary>
        /// The get show statistics.
        /// </summary>
        /// <param name="bShowStatistics">
        /// The b show statistics.
        /// </param>
        void GetShowStatistics([Out] out bool bShowStatistics);

        /// <summary>
        /// The set fullscreen mode.
        /// </summary>
        /// <param name="bFullscreen">
        /// The b fullscreen.
        /// </param>
        void SetFullscreenMode([In] bool bFullscreen);

        /// <summary>
        /// The get fullscreen mode.
        /// </summary>
        /// <param name="bFullscreen">
        /// The b fullscreen.
        /// </param>
        void GetFullscreenMode([Out] out bool bFullscreen);

        /// <summary>
        /// The get state.
        /// </summary>
        /// <param name="msTimeout">
        /// The ms timeout.
        /// </param>
        /// <param name="pfs">
        /// The pfs.
        /// </param>
        void GetState([In] int msTimeout, [Out] out int pfs);

        /// <summary>
        /// The render file.
        /// </summary>
        /// <param name="strFilename">
        /// The str filename.
        /// </param>
        void RenderFile([In] [MarshalAs(UnmanagedType.BStr)] string strFilename);

        /// <summary>
        /// The add source filter.
        /// </summary>
        /// <param name="strFilename">
        /// The str filename.
        /// </param>
        /// <param name="ppUnk">
        /// The pp unk.
        /// </param>
        void AddSourceFilter([In] [MarshalAs(UnmanagedType.BStr)] string strFilename, [Out] [MarshalAs(UnmanagedType.Interface)] out object ppUnk);

        /// <summary>
        /// The filter collection.
        /// </summary>
        /// <returns>
        /// The filter collection.
        /// </returns>
        [return: MarshalAs(UnmanagedType.Interface)]
        object FilterCollection();

        /// <summary>
        /// The reg filter collection.
        /// </summary>
        /// <returns>
        /// The reg filter collection.
        /// </returns>
        [return: MarshalAs(UnmanagedType.Interface)]
        object RegFilterCollection();

        /// <summary>
        /// The stop when ready.
        /// </summary>
        void StopWhenReady();
    }

    // ReSharper disable InconsistentNaming

    /// <summary>
    /// The isrd config.
    /// </summary>
    [Guid("7AAACEDF-4CFC-42e7-9A31-602634086CD4")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", Justification = "Reviewed. Suppression is OK here.")]
    internal interface ISRDConfig
    {
        /// <summary>
        /// The get srd property.
        /// </summary>
        /// <param name="iProperty">
        /// The i property.
        /// </param>
        /// <param name="pValue">
        /// The p value.
        /// </param>
        void GetSRDProperty(int iProperty, [Out] out int pValue);

        /// <summary>
        /// The set srd property.
        /// </summary>
        /// <param name="iProperty">
        /// The i property.
        /// </param>
        /// <param name="iValue">
        /// The i value.
        /// </param>
        void SetSRDProperty(int iProperty, int iValue);

        /// <summary>
        /// The set method.
        /// </summary>
        /// <param name="iMethod">
        /// The i method.
        /// </param>
        void SetMethod(int iMethod);

        /// <summary>
        /// The set aspect ratio per eye.
        /// </summary>
        /// <param name="iAspectRatioX">
        /// The i aspect ratio x.
        /// </param>
        /// <param name="iAspectRatioY">
        /// The i aspect ratio y.
        /// </param>
        void SetAspectRatioPerEye(int iAspectRatioX, int iAspectRatioY);

        /// <summary>
        /// The set separation.
        /// </summary>
        /// <param name="fSeparation">
        /// The f separation.
        /// </param>
        void SetSeparation(float fSeparation);
    }

    // ReSharper restore InconsistentNaming

    // ReSharper disable InconsistentNaming

    /// <summary>
    /// The istf config.
    /// </summary>
    [Guid("93D31BE0-F8BA-4a16-9C4F-BA16714C406C")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", Justification = "Reviewed. Suppression is OK here.")]
    internal interface ISTFConfig
    {
        /// <summary>
        /// Gets the configuration values.
        /// </summary>
        /// <param name="settings">
        /// The settings.
        /// </param>
        void GetSTFConfig([Out] out TSTFConfig settings);

        /// <summary>
        /// Sets the configuration values.
        /// </summary>
        /// <param name="settings">
        /// The settings.
        /// </param>
        void SetSTFConfig([In] ref TSTFConfig settings);

        /// <summary>
        /// Returns a single property value. Valid properties
        /// are defined at the beginning of this file.
        /// </summary>
        /// <param name="iProperty">
        /// The i property.
        /// </param>
        /// <param name="iValue">
        /// The i value.
        /// </param>
        void GetSTFProperty(int iProperty, [Out] out int iValue /* out IntPtr */);

        /// <summary>
        /// Sets a single property value.
        /// </summary>
        /// <param name="iProperty">
        /// The i property.
        /// </param>
        /// <param name="iValue">
        /// The i value.
        /// </param>
        void SetSTFProperty(int iProperty, int iValue /* IntPtr */);

        /// <summary>
        /// Issues command.
        /// </summary>
        /// <param name="iCommand">
        /// The i command.
        /// </param>
        /// <param name="data">
        /// The data.
        /// </param>
        void STFCommand([In] int iCommand, IntPtr data);

        /// <summary>
        /// Returns recommended 100% display size, based on the current settings. This
        /// is the optimum size a video player should use when zoom is set to 100%.
        /// </summary>
        /// <param name="iWidth">
        /// The i width.
        /// </param>
        /// <param name="iHeight">
        /// The i height.
        /// </param>
        void GetDefaultSize([Out] out int iWidth, [Out] out int iHeight);

        /// <summary>
        /// Returns recommended display size for given settings. This is the
        /// optimum size a video player should use when zoom is set to 100%.
        /// </summary>
        /// <param name="pSettings">
        /// The p settings.
        /// </param>
        /// <param name="iWidth">
        /// The i width.
        /// </param>
        /// <param name="iHeight">
        /// The i height.
        /// </param>
        void GetDefaultSizeEx([In] ref TSTFConfig pSettings, [Out] out int iWidth, [Out] out int iHeight);

        /// <summary>
        /// Returns video output size, based on the current settings. It might
        /// differ from the default size because pixels can be non-square.
        /// </summary>
        /// <param name="iWidth">
        /// The i width.
        /// </param>
        /// <param name="iHeight">
        /// The i height.
        /// </param>
        void GetOutputSize([Out] out int iWidth, [Out] out int iHeight);

        /// <summary>
        /// Returns video output size for given settings.
        /// </summary>
        /// <param name="settings">
        /// The settings.
        /// </param>
        /// <param name="iWidth">
        /// The i width.
        /// </param>
        /// <param name="iHeight">
        /// The i height.
        /// </param>
        void GetOutputSizeEx([In] ref TSTFConfig settings, [Out] out int iWidth, [Out] out int iHeight);

        /// <summary>
        /// Return video output size per eye for given settings.
        /// </summary>
        /// <param name="settings">
        /// The settings.
        /// </param>
        /// <param name="iWidth">
        /// The i width.
        /// </param>
        /// <param name="iHeight">
        /// The i height.
        /// </param>
        void GetOutputSizePerEye([In] ref TSTFConfig settings, [Out] out int iWidth, [Out] out int iHeight);

        /// <summary>
        /// Return width and height of input video.
        /// </summary>
        /// <param name="iWidth">
        /// The i width.
        /// </param>
        /// <param name="iHeight">
        /// The i height.
        /// </param>
        void GetInputSize([Out] out int iWidth, [Out] out int iHeight);

        /// <summary>
        /// Return the aspect ratio reported by the video decoder. If the decoder
        /// does not tell us the aspect ratio, the resolution is returned instead.
        /// </summary>
        /// <param name="iAspectRatioX">
        /// The i aspect ratio x.
        /// </param>
        /// <param name="iAspectRatioY">
        /// The i aspect ratio y.
        /// </param>
        void GetInputAspectRatio([Out] out int iAspectRatioX, [Out] out int iAspectRatioY);
    }

    // ReSharper restore InconsistentNaming

    // ReSharper disable InconsistentNaming

    /// <summary>
    /// The tstf config.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1306:FieldNamesMustBeginWithLowerCaseLetter", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1305:FieldNamesMustNotUseHungarianNotation", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter", Justification = "Reviewed. Suppression is OK here.")]
    public struct TSTFConfig
    {
        // The Stereo Transformation Filter exposes this interface. You can get it by
        // using QueryInterface on the IBaseFilter interface you get when creating
        // the filter.

        // Layout constants

        /// <summary>
        /// The layout monoscopic.
        /// </summary>
        public const int LAYOUT_MONOSCOPIC = 0;

        /// <summary>
        /// The layout interleaved 1.
        /// </summary>
        public const int LAYOUT_INTERLEAVED1 = 1;

        /// <summary>
        /// The layout interleaved 2.
        /// </summary>
        public const int LAYOUT_INTERLEAVED2 = 2;

        /// <summary>
        /// The layout sidebyside1.
        /// </summary>
        public const int LAYOUT_SIDEBYSIDE1 = 3;

        /// <summary>
        /// The layout sidebyside2.
        /// </summary>
        public const int LAYOUT_SIDEBYSIDE2 = 4;

        /// <summary>
        /// The layout overunder1.
        /// </summary>
        public const int LAYOUT_OVERUNDER1 = 5;

        /// <summary>
        /// The layout overunder2.
        /// </summary>
        public const int LAYOUT_OVERUNDER2 = 6;

        /// <summary>
        /// The layout dualstream.
        /// </summary>
        public const int LAYOUT_DUALSTREAM = 7;

        /// <summary>
        /// The layou 2ddepth.
        /// </summary>
        public const int LAYOUT_2DDEPTH = 8;

        /// <summary>
        /// The layout depth 2d.
        /// </summary>
        public const int LAYOUT_DEPTH2D = 9;

        /// <summary>
        /// The layout tiled.
        /// </summary>
        public const int LAYOUT_TILED = 10;

        /// <summary>
        /// The layout tiledreversed.
        /// </summary>
        public const int LAYOUT_TILEDREVERSED = 11;

        /// <summary>
        /// The layout frameseqentialrf.
        /// </summary>
        public const int LAYOUT_FRAMESEQENTIALRF = 12;

        /// <summary>
        /// The layout frameseqentiallf.
        /// </summary>
        public const int LAYOUT_FRAMESEQENTIALLF = 13;

        // Properties used by GetSTFProperty and SetSTFProperty. Some of the
        // properties correspond with members of the STFConfig structure.

        /// <summary>
        /// The prop layout.
        /// </summary>
        public const int PROP_LAYOUT = 0;

        /// <summary>
        /// The prop order.
        /// </summary>
        public const int PROP_ORDER = 1;

        /// <summary>
        /// The prop method.
        /// </summary>
        public const int PROP_METHOD = 2;

        /// <summary>
        /// The prop width.
        /// </summary>
        public const int PROP_WIDTH = 3;

        /// <summary>
        /// The prop height.
        /// </summary>
        public const int PROP_HEIGHT = 4;

        /// <summary>
        /// The prop inputseparation.
        /// </summary>
        public const int PROP_INPUTSEPARATION = 5;

        /// <summary>
        /// The prop outputseparation.
        /// </summary>
        public const int PROP_OUTPUTSEPARATION = 6;

        /// <summary>
        /// The prop cropleft.
        /// </summary>
        public const int PROP_CROPLEFT = 7;

        /// <summary>
        /// The prop cropright.
        /// </summary>
        public const int PROP_CROPRIGHT = 8;

        /// <summary>
        /// The prop croptop.
        /// </summary>
        public const int PROP_CROPTOP = 9;

        /// <summary>
        /// The prop cropbottom.
        /// </summary>
        public const int PROP_CROPBOTTOM = 10;

        /// <summary>
        /// The prop adjusthorizontally.
        /// </summary>
        public const int PROP_ADJUSTHORIZONTALLY = 11;

        /// <summary>
        /// The prop adjustvertically.
        /// </summary>
        public const int PROP_ADJUSTVERTICALLY = 12;

        /// <summary>
        /// The prop adjustwindow.
        /// </summary>
        public const int PROP_ADJUSTWINDOW = 13;

        /// <summary>
        /// The prop leftrotation.
        /// </summary>
        public const int PROP_LEFTROTATION = 14;

        /// <summary>
        /// The prop rightrotation.
        /// </summary>
        public const int PROP_RIGHTROTATION = 15;

        /// <summary>
        /// The prop aspectratiox.
        /// </summary>
        public const int PROP_ASPECTRATIOX = 16;

        /// <summary>
        /// The prop aspectratioy.
        /// </summary>
        public const int PROP_ASPECTRATIOY = 17;

        /// <summary>
        /// The prop aspectratioflags.
        /// </summary>
        public const int PROP_ASPECTRATIOFLAGS = 18;

        /// <summary>
        /// The prop flag s 1.
        /// </summary>
        public const int PROP_FLAGS1 = 19;

        /// <summary>
        /// The prop inputformats.
        /// </summary>
        public const int PROP_INPUTFORMATS = 20;

        /// <summary>
        /// The prop outputformats.
        /// </summary>
        public const int PROP_OUTPUTFORMATS = 21;

        /// <summary>
        /// The prop flipflags.
        /// </summary>
        public const int PROP_FLIPFLAGS = 22;

        /// <summary>
        /// The prop optanaredcya n_ factorgreen.
        /// </summary>
        public const int PROP_OPTANAREDCYAN_FACTORGREEN = 23;

        /// <summary>
        /// The prop optanaredcya n_ factorblue.
        /// </summary>
        public const int PROP_OPTANAREDCYAN_FACTORBLUE = 24;

        /// <summary>
        /// The prop optanaredcya n_ gamma.
        /// </summary>
        public const int PROP_OPTANAREDCYAN_GAMMA = 25;

        /// <summary>
        /// The prop performance.
        /// </summary>
        public const int PROP_PERFORMANCE = 26;

        /// <summary>
        /// The prop perfflags.
        /// </summary>
        public const int PROP_PERFFLAGS = 27;

        /// <summary>
        /// The prop droppedframesdecoder.
        /// </summary>
        public const int PROP_DROPPEDFRAMESDECODER = 28;

        /// <summary>
        /// The prop droppedframesstf.
        /// </summary>
        public const int PROP_DROPPEDFRAMESSTF = 29;

        /// <summary>
        /// The prop multicpumode.
        /// </summary>
        public const int PROP_MULTICPUMODE = 30;

        /// <summary>
        /// The prop numthreads.
        /// </summary>
        public const int PROP_NUMTHREADS = 31;

        /// <summary>
        /// The prop numinputbuffers.
        /// </summary>
        public const int PROP_NUMINPUTBUFFERS = 32;

        /// <summary>
        /// The prop numoutputbuffers.
        /// </summary>
        public const int PROP_NUMOUTPUTBUFFERS = 33;

        /// <summary>
        /// The prop inputframeduration.
        /// </summary>
        public const int PROP_INPUTFRAMEDURATION = 34;

        /// <summary>
        /// The prop exposerefclock.
        /// </summary>
        public const int PROP_EXPOSEREFCLOCK = 35;

        /// <summary>
        /// The prop storedframeavailable.
        /// </summary>
        public const int PROP_STOREDFRAMEAVAILABLE = 36;

        /// <summary>
        /// The prop horizontaltiles.
        /// </summary>
        public const int PROP_HORIZONTALTILES = 37;

        /// <summary>
        /// The prop verticaltiles.
        /// </summary>
        public const int PROP_VERTICALTILES = 38;

        /// <summary>
        /// The prop lefttile.
        /// </summary>
        public const int PROP_LEFTTILE = 39;

        /// <summary>
        /// The prop righttile.
        /// </summary>
        public const int PROP_RIGHTTILE = 40;

        /// <summary>
        /// The prop lowqualityframes.
        /// </summary>
        public const int PROP_LOWQUALITYFRAMES = 41;

        /// <summary>
        /// The prop preventdroppedframes.
        /// </summary>
        public const int PROP_PREVENTDROPPEDFRAMES = 42;

        /// <summary>
        /// The prop optanayellowblu e_ factorred.
        /// </summary>
        public const int PROP_OPTANAYELLOWBLUE_FACTORRED = 43;

        /// <summary>
        /// The prop optanayellowblu e_ factorgreen.
        /// </summary>
        public const int PROP_OPTANAYELLOWBLUE_FACTORGREEN = 44;

        /// <summary>
        /// The prop optanayellowblu e_ gamma.
        /// </summary>
        public const int PROP_OPTANAYELLOWBLUE_GAMMA = 45;

        /// <summary>
        /// The prop optanagreenpurpl e_ factorred.
        /// </summary>
        public const int PROP_OPTANAGREENPURPLE_FACTORRED = 46;

        /// <summary>
        /// The prop optanagreenpurpl e_ factorblue.
        /// </summary>
        public const int PROP_OPTANAGREENPURPLE_FACTORBLUE = 47;

        /// <summary>
        /// The prop optanagreenpurpl e_ gamma.
        /// </summary>
        public const int PROP_OPTANAGREENPURPLE_GAMMA = 48;

        /// <summary>
        /// The prop rendereroverride.
        /// </summary>
        public const int PROP_RENDEREROVERRIDE = 49;

        /// <summary>
        /// The prop lowresmode.
        /// </summary>
        public const int PROP_LOWRESMODE = 50;

        /// <summary>
        /// The prop stillmode.
        /// </summary>
        public const int PROP_STILLMODE = 51;

        /// <summary>
        /// The prop sensiodecodingmode.
        /// </summary>
        public const int PROP_SENSIODECODINGMODE = 52;

        /// <summary>
        /// The prop outputframeduration.
        /// </summary>
        public const int PROP_OUTPUTFRAMEDURATION = 53;

        /// <summary>
        /// The prop monooverride.
        /// </summary>
        public const int PROP_MONOOVERRIDE = 54;

        /// <summary>
        /// The st f_ comman d_ checkmonitor.
        /// </summary>
        public const int STF_COMMAND_CHECKMONITOR = 0;

        /// <summary>
        /// The st f_ comman d_ sendstoredframe.
        /// </summary>
        public const int STF_COMMAND_SENDSTOREDFRAME = 1;

        /// <summary>
        // Flags supported by PROP_ASPECTRATIOFLAGS property and iAspectRatioFlags of
        // STFConfig. These flags are ignored if PROP_WIDTH and PROP_HEIGHT are not
        // equal zero.
        /// </summary>
        public const int ARFLAGS_INPUTHALFWIDTH = 1;

        /// <summary>
        /// The arflag s_ inputhalfheight.
        /// </summary>
        public const int ARFLAGS_INPUTHALFHEIGHT = 2;

        /// <summary>
        /// The arflag s_ outputhalfwidth.
        /// </summary>
        public const int ARFLAGS_OUTPUTHALFWIDTH = 4;

        /// <summary>
        /// The arflag s_ outputhalfheight.
        /// </summary>
        public const int ARFLAGS_OUTPUTHALFHEIGHT = 8;

        /// <summary>
        // Flags for PROP_FLAGS1 property and iFlags of STFConfig
        /// </summary>
        public const int FLAGS_DEINTERLACE = 1; // Deinterlacing the video

        /// <summary>
        /// The flag s_ swapleftright.
        /// </summary>
        public const int FLAGS_SWAPLEFTRIGHT = 2; // swaps left and right image (obviously ;-)

        /// <summary>
        /// The flag s_ useaspectratiofordefaultsize.
        /// </summary>
        public const int FLAGS_USEASPECTRATIOFORDEFAULTSIZE = 4; // else the pixel resolution is used (requires VIDEOINFOHEADER2)

        // public const int FLAGS_ALWAYSPREFERYUV = 8;  // prefer YUV output even for anaglyph formats and RGB input

        /// <summary>
        /// The flag s_ removetimestamps.
        /// </summary>
        public const int FLAGS_REMOVETIMESTAMPS = 16; // remove timestamps on output pins

        /// <summary>
        /// The flag s_ sensiodecoding.
        /// </summary>
        public const int FLAGS_SENSIODECODING = 32; // Expand Sensio pattern to double width

        /// <summary>
        /// The flag s_ timingleftahead.
        /// </summary>
        public const int FLAGS_TIMINGLEFTAHEAD = 64; // Left eye is half frame duration ahead

        /// <summary>
        /// The flag s_ timingrightahead.
        /// </summary>
        public const int FLAGS_TIMINGRIGHTAHEAD = 128; // Right eye is half frame duration ahead

        /// <summary>
        // Flags supported by PROP_PERFFLAGS property.
        /// </summary>
        public const int PERFFLAGS_USEMMX = 0x00000001;

        /// <summary>
        /// The perfflag s_ usesse.
        /// </summary>
        public const int PERFFLAGS_USESSE = 0x00000002;

        /// <summary>
        /// The perfflag s_ usess e 2.
        /// </summary>
        public const int PERFFLAGS_USESSE2 = 0x00000004;

        /// <summary>
        /// The perfflag s_ usess e 3.
        /// </summary>
        public const int PERFFLAGS_USESSE3 = 0x00000008;

        /// <summary>
        /// The perfflag s_ usere s 1.
        /// </summary>
        public const int PERFFLAGS_USERES1 = 0x00000010;

        /// <summary>
        /// The perfflag s_ usere s 2.
        /// </summary>
        public const int PERFFLAGS_USERES2 = 0x00000020;

        /// <summary>
        /// The perfflag s_ usere s 3.
        /// </summary>
        public const int PERFFLAGS_USERES3 = 0x00000040;

        /// <summary>
        /// The perfflag s_ usere s 4.
        /// </summary>
        public const int PERFFLAGS_USERES4 = 0x00000080;

        /// <summary>
        /// The perfflag s_ usere s 5.
        /// </summary>
        public const int PERFFLAGS_USERES5 = 0x00000100;

        /// <summary>
        /// The perfflag s_ usedxv a 2.
        /// </summary>
        public const int PERFFLAGS_USEDXVA2 = 0x00000200;

        /// <summary>
        /// The perfflag s_ mmxsupported.
        /// </summary>
        public const int PERFFLAGS_MMXSUPPORTED = 0x00000400;

        /// <summary>
        /// The perfflag s_ ssesupported.
        /// </summary>
        public const int PERFFLAGS_SSESUPPORTED = 0x00000800;

        /// <summary>
        /// The perfflag s_ ss e 2 supported.
        /// </summary>
        public const int PERFFLAGS_SSE2SUPPORTED = 0x00001000;

        /// <summary>
        /// The perfflag s_ ss e 3 supported.
        /// </summary>
        public const int PERFFLAGS_SSE3SUPPORTED = 0x00002000;

        /// <summary>
        /// The perfflag s_ re s 1 supported.
        /// </summary>
        public const int PERFFLAGS_RES1SUPPORTED = 0x00004000;

        /// <summary>
        /// The perfflag s_ re s 2 supported.
        /// </summary>
        public const int PERFFLAGS_RES2SUPPORTED = 0x00008000;

        /// <summary>
        /// The perfflag s_ re s 3 supported.
        /// </summary>
        public const int PERFFLAGS_RES3SUPPORTED = 0x00010000;

        /// <summary>
        /// The perfflag s_ re s 4 supported.
        /// </summary>
        public const int PERFFLAGS_RES4SUPPORTED = 0x00020000;

        /// <summary>
        /// The perfflag s_ re s 5 supported.
        /// </summary>
        public const int PERFFLAGS_RES5SUPPORTED = 0x00040000;

        /// <summary>
        /// The perfflag s_ dxv a 2 supported.
        /// </summary>
        public const int PERFFLAGS_DXVA2SUPPORTED = 0x00080000;

        /// <summary>
        /// The perfflag s_ mmxinuse.
        /// </summary>
        public const int PERFFLAGS_MMXINUSE = 0x00100000;

        /// <summary>
        /// The perfflag s_ sseinuse.
        /// </summary>
        public const int PERFFLAGS_SSEINUSE = 0x00200000;

        /// <summary>
        /// The perfflag s_ ss e 2 inuse.
        /// </summary>
        public const int PERFFLAGS_SSE2INUSE = 0x00400000;

        /// <summary>
        /// The perfflag s_ ss e 3 inuse.
        /// </summary>
        public const int PERFFLAGS_SSE3INUSE = 0x00800000;

        /// <summary>
        /// The perfflag s_ re s 1 inuse.
        /// </summary>
        public const int PERFFLAGS_RES1INUSE = 0x01000000;

        /// <summary>
        /// The perfflag s_ re s 2 inuse.
        /// </summary>
        public const int PERFFLAGS_RES2INUSE = 0x02000000;

        /// <summary>
        /// The perfflag s_ re s 3 inuse.
        /// </summary>
        public const int PERFFLAGS_RES3INUSE = 0x04000000;

        /// <summary>
        /// The perfflag s_ re s 4 inuse.
        /// </summary>
        public const int PERFFLAGS_RES4INUSE = 0x08000000;

        /// <summary>
        /// The perfflag s_ re s 5 inuse.
        /// </summary>
        public const int PERFFLAGS_RES5INUSE = 0x10000000;

        /// <summary>
        /// The perfflag s_ dxv a 2 inuse.
        /// </summary>
        public const int PERFFLAGS_DXVA2INUSE = 0x20000000;

        // Flags for PROP_INPUTFORMATS and PROP_OUTPUTFORMATS properties as well as
        // iInputFormats and iOutputFormats of STFConfig. To enable a format, set
        // the corresponding bit.

        /// <summary>
        /// The format rg b 24.
        /// </summary>
        public const int FORMAT_RGB24 = 0x0001;

        /// <summary>
        /// The format rg b 32.
        /// </summary>
        public const int FORMAT_RGB32 = 0x0002;

        /// <summary>
        /// The format yu y 2.
        /// </summary>
        public const int FORMAT_YUY2 = 0x0004;

        /// <summary>
        /// The format uyvy.
        /// </summary>
        public const int FORMAT_UYVY = 0x0008;

        /// <summary>
        /// The format y v 12.
        /// </summary>
        public const int FORMAT_YV12 = 0x0010;

        /// <summary>
        /// The format i 420.
        /// </summary>
        public const int FORMAT_I420 = 0x0020;

        /// <summary>
        /// The format iyuv.
        /// </summary>
        public const int FORMAT_IYUV = 0x0040;

        /// <summary>
        /// The format p 420.
        /// </summary>
        public const int FORMAT_P420 = 0x0080;

        /// <summary>
        /// The format p 422.
        /// </summary>
        public const int FORMAT_P422 = 0x0100;

        /// <summary>
        /// The format p 444.
        /// </summary>
        public const int FORMAT_P444 = 0x0200;

        /// <summary>
        /// The format n v 12.
        /// </summary>
        public const int FORMAT_NV12 = 0x0400;

        /// <summary>
        /// The format argb.
        /// </summary>
        public const int FORMAT_ARGB = 0x0800;

        /// <summary>
        /// The format all.
        /// </summary>
        public const int FORMAT_ALL = FORMAT_RGB24 | FORMAT_RGB32 | FORMAT_ARGB | FORMAT_YUY2 | FORMAT_UYVY | FORMAT_YV12 | FORMAT_I420 | FORMAT_IYUV | FORMAT_NV12 | FORMAT_P420;

        /// <summary>
        /// The format allinput.
        /// </summary>
        public const int FORMAT_ALLINPUT = FORMAT_RGB24 | FORMAT_RGB32 | FORMAT_ARGB | FORMAT_YUY2 | FORMAT_UYVY | FORMAT_YV12 | FORMAT_I420 | FORMAT_IYUV | FORMAT_NV12;

        /// <summary>
        /// The format alloutput.
        /// </summary>
        public const int FORMAT_ALLOUTPUT = FORMAT_RGB24 | FORMAT_RGB32 | FORMAT_YUY2 | FORMAT_YV12 | FORMAT_I420 | FORMAT_IYUV | FORMAT_P420 | FORMAT_P422;

        // Flags supported by PROP_FLIPFLAGS property
        // and iFlipFlags member of STFConfig.

        /// <summary>
        /// The flipflag s_ fliplefthorizontally.
        /// </summary>
        public const int FLIPFLAGS_FLIPLEFTHORIZONTALLY = 1;

        /// <summary>
        /// The flipflag s_ flipleftvertically.
        /// </summary>
        public const int FLIPFLAGS_FLIPLEFTVERTICALLY = 2;

        /// <summary>
        /// The flipflag s_ fliprighthorizontally.
        /// </summary>
        public const int FLIPFLAGS_FLIPRIGHTHORIZONTALLY = 4;

        /// <summary>
        /// The flipflag s_ fliprightvertically.
        /// </summary>
        public const int FLIPFLAGS_FLIPRIGHTVERTICALLY = 8;

        // Flags supported by PROP_LEFTROTATION and PROP_RIGHTROTATION properties
        // as well as iLeftRotation and iRightRotation members of STFConfig.

        /// <summary>
        /// The rotate d_ none.
        /// </summary>
        public const int ROTATED_NONE = 0;

        /// <summary>
        /// The rotate d_ left.
        /// </summary>
        public const int ROTATED_LEFT = 1; // Rotate the image right by 90°

        /// <summary>
        /// The rotate d_ right.
        /// </summary>
        public const int ROTATED_RIGHT = 2; // Rotate the image left by 90°

        /// <summary>
        /// The rotate d_ turned.
        /// </summary>
        public const int ROTATED_TURNED = 3; // Rotate the image by 180°

        // Values supported by PROP_SENSIODECODINGMODE.

        /// <summary>
        /// The sensiodecodingmod e_ sensio.
        /// </summary>
        public const int SENSIODECODINGMODE_SENSIO = 0;

        /// <summary>
        /// The sensiodecodingmod e_ breide.
        /// </summary>
        public const int SENSIODECODINGMODE_BREIDE = 1;

        /// <summary>
        /// The sensiodecodingmod e_ sensiodemo.
        /// </summary>
        public const int SENSIODECODINGMODE_SENSIODEMO = 2;

        /// <summary>
        /// The sensiodecodingmod e_ breidedemo.
        /// </summary>
        public const int SENSIODECODINGMODE_BREIDEDEMO = 3;

        /// <summary>
        /// The sensiodecodingmod e_ sensiovsbreide.
        /// </summary>
        public const int SENSIODECODINGMODE_SENSIOVSBREIDE = 4;

        // ReSharper restore InconsistentNaming

        /// <summary>
        /// The i size.
        /// </summary>
        public int iSize;

        /// <summary>
        /// The i layout.
        /// </summary>
        public int iLayout;

        /// <summary>
        /// The i order.
        /// </summary>
        public int iOrder; // Unused

        /// <summary>
        /// The i method.
        /// </summary>
        public int iMethod;

        /// <summary>
        /// The i width.
        /// </summary>
        public int iWidth; // Set to 0 for default size

        /// <summary>
        /// The i height.
        /// </summary>
        public int iHeight; // Set to 0 for default size

        /// <summary>
        /// The i input separation.
        /// </summary>
        public int iInputSeparation;

        /// <summary>
        /// The i output separation.
        /// </summary>
        public int iOutputSeparation;

        /// <summary>
        /// The i crop left.
        /// </summary>
        public int iCropLeft;

        /// <summary>
        /// The i crop right.
        /// </summary>
        public int iCropRight;

        /// <summary>
        /// The i crop top.
        /// </summary>
        public int iCropTop;

        /// <summary>
        /// The i crop bottom.
        /// </summary>
        public int iCropBottom;

        /// <summary>
        /// The i adjust horizontally.
        /// </summary>
        public int iAdjustHorizontally;

        /// <summary>
        /// The i adjust vertically.
        /// </summary>
        public int iAdjustVertically;

        /// <summary>
        /// The i adjust window.
        /// </summary>
        public int iAdjustWindow;

        /// <summary>
        /// The i left rotation.
        /// </summary>
        public int iLeftRotation;

        /// <summary>
        /// The i right rotation.
        /// </summary>
        public int iRightRotation;

        /// <summary>
        /// The i aspect ratio x.
        /// </summary>
        public int iAspectRatioX;

        /// <summary>
        /// The i aspect ratio y.
        /// </summary>
        public int iAspectRatioY;

        /// <summary>
        /// The i aspect ratio flags.
        /// </summary>
        public int iAspectRatioFlags;

        /// <summary>
        /// The i flags.
        /// </summary>
        public int iFlags;

        /// <summary>
        /// The i input formats.
        /// </summary>
        public int iInputFormats;

        /// <summary>
        /// The i output formats.
        /// </summary>
        public int iOutputFormats;

        /// <summary>
        /// The i flip flags.
        /// </summary>
        public int iFlipFlags;

        /// <summary>
        /// The i horz tiles.
        /// </summary>
        public int iHorzTiles;

        /// <summary>
        /// The i vert tiles.
        /// </summary>
        public int iVertTiles;

        /// <summary>
        /// The i left tile.
        /// </summary>
        public int iLeftTile;

        /// <summary>
        /// The i right tile.
        /// </summary>
        public int iRightTile;

        // ReSharper disable UnusedParameter.Local
        // ReSharper disable InconsistentNaming

        /// <summary>
        /// Initializes a new instance of the <see cref="TSTFConfig"/> struct.
        /// </summary>
        /// <param name="LOLEMPTY">
        /// The lolempty.
        /// </param>
        public TSTFConfig(string LOLEMPTY)
        {
            /*
            iSize = Marshal.SizeOf(typeof(TSTFConfig));
            iInputFormats = FORMAT_ALLINPUT;
            iOutputFormats = FORMAT_ALLOUTPUT;
            iHorzTiles = 4;
            iVertTiles = 2;
            iLeftTile = 1;
            iRightTile = 2;
            */
            this.iSize = Marshal.SizeOf(typeof(TSTFConfig));
            this.iLayout = 0;
            this.iOrder = 0; // Unused
            this.iMethod = 0;
            this.iWidth = 0; // Set to 0 for default size
            this.iHeight = 0; // Set to 0 for default size
            this.iInputSeparation = 0;
            this.iOutputSeparation = 0;
            this.iCropLeft = 0;
            this.iCropRight = 0;
            this.iCropTop = 0;
            this.iCropBottom = 0;
            this.iAdjustHorizontally = 0;
            this.iAdjustVertically = 0;
            this.iAdjustWindow = 0;
            this.iLeftRotation = 0;
            this.iRightRotation = 0;
            this.iAspectRatioX = 0;
            this.iAspectRatioY = 0;
            this.iAspectRatioFlags = 0;
            this.iFlags = 0;
            this.iInputFormats = FORMAT_ALLINPUT;
            this.iOutputFormats = FORMAT_ALLOUTPUT;
            this.iFlipFlags = 0;
            this.iHorzTiles = 4;
            this.iVertTiles = 2;
            this.iLeftTile = 1;
            this.iRightTile = 2;
        }

        // ReSharper restore InconsistentNaming
        // ReSharper restore UnusedParameter.Local
    }

    // ReSharper disable InconsistentNaming

    /// <summary>
    /// The consts.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct CONSTS
    {
        /// <summary>
        // Values for glasses control property
        /// </summary>
        public const int GLASSESCONTROL_NONE = 0; // No glasses control

        /// <summary>
        /// The glassescontro l_ v r 920.
        /// </summary>
        public const int GLASSESCONTROL_VR920 = 1; // Vuzix VR920

        /// <summary>
        /// The glassescontro l_ ed.
        /// </summary>
        public const int GLASSESCONTROL_ED = 2; // EDimensional and compatible glasses

        /// <summary>
        /// The glassescontro l_ blc.
        /// </summary>
        public const int GLASSESCONTROL_BLC = 3; // Blue line code

        /// <summary>
        /// The glassescontro l_ rtsdtr.
        /// </summary>
        public const int GLASSESCONTROL_RTSDTR = 4; // Serial port RTS/DTR lines

        /// <summary>
        /// The glassescontro l_ socket.
        /// </summary>
        public const int GLASSESCONTROL_SOCKET = 5; // Socket

        /// <summary>
        /// The glassescontro l_ cmo.
        /// </summary>
        public const int GLASSESCONTROL_CMO = 6; // CMO shutter glasses

        /// <summary>
        // Values for render mode property
        /// </summary>
        public const int RENDERMODE_NONE = 0; // Undefined render mode

        /// <summary>
        /// The rendermod e_ gdi.
        /// </summary>
        public const int RENDERMODE_GDI = 1; // GDI fallback mode

        /// <summary>
        /// The rendermod e_ directx.
        /// </summary>
        public const int RENDERMODE_DIRECTX = 2; // DirectX windowed mode

        /// <summary>
        /// The rendermod e_ directxexcl.
        /// </summary>
        public const int RENDERMODE_DIRECTXEXCL = 3; // DirectX exclusive fullscreen mode

        /// <summary>
        /// The rendermod e_ opengl.
        /// </summary>
        public const int RENDERMODE_OPENGL = 4; // OpenGL

        // Media events

        /// <summary>
        /// The event lostfocus.
        /// </summary>
        public const int EVENT_LOSTFOCUS = 0; // DirectX exclusive mode lost focus; application should switch to windowed mode

        /// <summary>
        /// The event outofvideomem.
        /// </summary>
        public const int EVENT_OUTOFVIDEOMEM = 1; // Not enough video memory to continue rendering; application should show error message and close the graph

        /// <summary>
        /// The event no d 3 ddevice.
        /// </summary>
        public const int EVENT_NOD3DDEVICE = 2; // Fauled DirectX device and there is no GDI fallback; application should show error message and close the graph

        /// <summary>
        /// The event closerequest.
        /// </summary>
        public const int EVENT_CLOSEREQUEST = 3; // See also PROP_CANCLOSE; application should leave fullscren mode

        // Properties used by GetSRDProperty and SetSRDProperty.

        /// <summary>
        /// The prop glassescontrol.
        /// </summary>
        public const int PROP_GLASSESCONTROL = 0; // [R] See possible values above

        /// <summary>
        /// The prop lateness.
        /// </summary>
        public const int PROP_LATENESS = 1; // [R] Lateness in 100 ns units

        /// <summary>
        /// The prop eventcode.
        /// </summary>
        public const int PROP_EVENTCODE = 2; // [R/W] Event code to be used for media events; see event list above

        /// <summary>
        /// The prop rendermode.
        /// </summary>
        public const int PROP_RENDERMODE = 3; // [R] See possible values above

        /// <summary>
        /// The prop canclose.
        /// </summary>
        public const int PROP_CANCLOSE = 4; // [R/W] Accept Alt+F4 or send EVENT_CLOSEREQUEST?

        /// <summary>
        // Stereo method constants
        /// </summary>
        public const int METHOD_SOURCE = 0;

        /// <summary>
        /// The metho d_ monoscopi c 1.
        /// </summary>
        public const int METHOD_MONOSCOPIC1 = 1;

        /// <summary>
        /// The metho d_ monoscopi c 2.
        /// </summary>
        public const int METHOD_MONOSCOPIC2 = 2;

        /// <summary>
        /// The metho d_ dualoutput.
        /// </summary>
        public const int METHOD_DUALOUTPUT = 3; // Requires VMR 7, VMR 9 or Stereo Renderer

        /// <summary>
        /// The metho d_ stereobright.
        /// </summary>
        public const int METHOD_STEREOBRIGHT = 4;

        /// <summary>
        /// The metho d_ nvidia.
        /// </summary>
        public const int METHOD_NVIDIA = 5; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ opengl.
        /// </summary>
        public const int METHOD_OPENGL = 6; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ softpageflip.
        /// </summary>
        public const int METHOD_SOFTPAGEFLIP = 7; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ sharp.
        /// </summary>
        public const int METHOD_SHARP = 8; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ tridelity.
        /// </summary>
        public const int METHOD_TRIDELITY = 9; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ i z 3 d 07 glasses.
        /// </summary>
        public const int METHOD_IZ3D07GLASSES = 10; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ i z 3 d 09 glasses.
        /// </summary>
        public const int METHOD_IZ3D09GLASSES = 11; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ sis.
        /// </summary>
        public const int METHOD_SIS = 12; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ sidebysid e 1.
        /// </summary>
        public const int METHOD_SIDEBYSIDE1 = 13;

        /// <summary>
        /// The metho d_ sidebysid e 2.
        /// </summary>
        public const int METHOD_SIDEBYSIDE2 = 14;

        /// <summary>
        /// The metho d_ overunde r 1.
        /// </summary>
        public const int METHOD_OVERUNDER1 = 15;

        /// <summary>
        /// The metho d_ overunde r 2.
        /// </summary>
        public const int METHOD_OVERUNDER2 = 16;

        /// <summary>
        /// The metho d_ interleave d 1.
        /// </summary>
        public const int METHOD_INTERLEAVED1 = 17;

        /// <summary>
        /// The metho d_ interleave d 2.
        /// </summary>
        public const int METHOD_INTERLEAVED2 = 18;

        /// <summary>
        /// The metho d_ interleave d 3.
        /// </summary>
        public const int METHOD_INTERLEAVED3 = 19;

        /// <summary>
        /// The metho d_ interleave d 4.
        /// </summary>
        public const int METHOD_INTERLEAVED4 = 20;

        /// <summary>
        /// The metho d_ checkerboar d 1.
        /// </summary>
        public const int METHOD_CHECKERBOARD1 = 21; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ checkerboar d 2.
        /// </summary>
        public const int METHOD_CHECKERBOARD2 = 22; // Requires Stereo Renderer

        /// <summary>
        /// The metho d_ purean a 1.
        /// </summary>
        public const int METHOD_PUREANA1 = 23;

        /// <summary>
        /// The metho d_ purean a 2.
        /// </summary>
        public const int METHOD_PUREANA2 = 24;

        /// <summary>
        /// The metho d_ purean a 3.
        /// </summary>
        public const int METHOD_PUREANA3 = 25;

        /// <summary>
        /// The metho d_ purean a 4.
        /// </summary>
        public const int METHOD_PUREANA4 = 26;

        /// <summary>
        /// The metho d_ greyan a 1.
        /// </summary>
        public const int METHOD_GREYANA1 = 27; // Grey anaglyph, red - cyan

        /// <summary>
        /// The metho d_ greyan a 2.
        /// </summary>
        public const int METHOD_GREYANA2 = 28; // Grey anaglyph, cyan - red

        /// <summary>
        /// The metho d_ greyan a 3.
        /// </summary>
        public const int METHOD_GREYANA3 = 29; // Grey anaglyph, yellow - blue

        /// <summary>
        /// The metho d_ greyan a 4.
        /// </summary>
        public const int METHOD_GREYANA4 = 30; // Grey anaglyph, blue - yellow

        /// <summary>
        /// The metho d_ greyan a 5.
        /// </summary>
        public const int METHOD_GREYANA5 = 31; // Grey anaglyph, green - purple

        /// <summary>
        /// The metho d_ greyan a 6.
        /// </summary>
        public const int METHOD_GREYANA6 = 32; // Grey anaglyph, purple - green

        /// <summary>
        /// The metho d_ shadean a 1.
        /// </summary>
        public const int METHOD_SHADEANA1 = 33; // Half color anaglyph, red - cyan

        /// <summary>
        /// The metho d_ shadean a 2.
        /// </summary>
        public const int METHOD_SHADEANA2 = 34; // Half color anaglyph, cyan - red

        /// <summary>
        /// The metho d_ shadean a 3.
        /// </summary>
        public const int METHOD_SHADEANA3 = 35; // Half color anaglyph, yellow - blue

        /// <summary>
        /// The metho d_ shadean a 4.
        /// </summary>
        public const int METHOD_SHADEANA4 = 36; // Half color anaglyph, blue - yellow

        /// <summary>
        /// The metho d_ shadean a 5.
        /// </summary>
        public const int METHOD_SHADEANA5 = 37; // Half color anaglyph, green - purple

        /// <summary>
        /// The metho d_ shadean a 6.
        /// </summary>
        public const int METHOD_SHADEANA6 = 38; // Half color anaglyph, purple - green

        /// <summary>
        /// The metho d_ coloran a 1.
        /// </summary>
        public const int METHOD_COLORANA1 = 39; // Color anaglyph, red - cyan

        /// <summary>
        /// The metho d_ coloran a 2.
        /// </summary>
        public const int METHOD_COLORANA2 = 40; // Color anaglyph, cyan - red

        /// <summary>
        /// The metho d_ coloran a 3.
        /// </summary>
        public const int METHOD_COLORANA3 = 41; // Color anaglyph, yellow - blue

        /// <summary>
        /// The metho d_ coloran a 4.
        /// </summary>
        public const int METHOD_COLORANA4 = 42; // Color anaglyph, blue - yellow

        /// <summary>
        /// The metho d_ coloran a 5.
        /// </summary>
        public const int METHOD_COLORANA5 = 43; // Color anaglyph, green - purple

        /// <summary>
        /// The metho d_ coloran a 6.
        /// </summary>
        public const int METHOD_COLORANA6 = 44; // Color anaglyph, purple - green

        /// <summary>
        /// The metho d_ optan a 1.
        /// </summary>
        public const int METHOD_OPTANA1 = 45; // Optimized anaglpyh, red - cyan

        /// <summary>
        /// The metho d_ optan a 2.
        /// </summary>
        public const int METHOD_OPTANA2 = 46; // Optimized anaglpyh, cyan - red

        /// <summary>
        /// The metho d_ optan a 3.
        /// </summary>
        public const int METHOD_OPTANA3 = 47; // Optimized anaglpyh, yellow - blue

        /// <summary>
        /// The metho d_ optan a 4.
        /// </summary>
        public const int METHOD_OPTANA4 = 48; // Optimized anaglpyh, blue - yellow

        /// <summary>
        /// The metho d_ optan a 5.
        /// </summary>
        public const int METHOD_OPTANA5 = 49; // Optimized anaglpyh, green - purple

        /// <summary>
        /// The metho d_ optan a 6.
        /// </summary>
        public const int METHOD_OPTANA6 = 50; // Optimized anaglpyh, purple - green

        /// <summary>
        /// The metho d_ stereobrightleft.
        /// </summary>
        public const int METHOD_STEREOBRIGHTLEFT = 51;

        /// <summary>
        /// The metho d_ stereobrightright.
        /// </summary>
        public const int METHOD_STEREOBRIGHTRIGHT = 52;

        /// <summary>
        /// The metho d_ dxdualscreen.
        /// </summary>
        public const int METHOD_DXDUALSCREEN = 53; // Requires Stereo Renderer
    }

    // ReSharper restore InconsistentNaming
}